package com.smartmedical.system.patient.mapper;


import com.smartmedical.system.api.domain.PatientUsers;
import com.smartmedical.system.patient.domain.dto.PatientIserArchivesDto;
import com.smartmedical.system.patient.domain.dto.PatientTaskdto;
import com.smartmedical.system.patient.domain.dto.PatientUserIdCardDto;
import com.smartmedical.system.patient.domain.entity.*;
import com.smartmedical.system.patient.domain.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface PatientUserMapper {
    PatientUsers login(@Param("email") String email);



    PatientUserEntity checkEmail(@Param("email") String email);


    void insert(PatientUserEntity patientUserEntity);

    UserInfoByIdVo userInfoById(@Param("id") Long id);

    void perfectUserInfo(@Param("age") Integer age, @Param("height") Integer height, @Param("weight") Integer weight, @Param("id") Long id);

    void addUserArchives(PatientIserArchivesDto patientIserArchivesDto);


    void uploadArchivesPicture(@Param("pictureString") String pictureString, @Param("archivesId") Long archivesId);

    PatientIserArchivesEntity findUserArchives(Long userId);

    void addSign(PatientUserConsumptionRecordEntity patientUserConsumptionRecordEntity);

    List<PatientUserConsumptionRecordEntity> whetherSignToday(@Param("userId") Long userId);

    List<PatientUserConsumptionRecordEntity> whetherSignTodays(@Param("userId") Long userId);

    void updateUserInfo(@Param("sex") Integer sex, @Param("userId") Long userId);

    void updateUserNickName(@Param("nickName") String nickName, @Param("userId") Long userId);

    void makeInvitationCode(PatientUserEntity patientUserEntity);

    List<PatientUserEntity> findUserInvitationCode(@Param("userId") Long userId);

    void updateUserPwd(PatientUserEntity patientUserEntity);

    void doTask(PatientTaskdto patientTaskdto);


    UserTaskRecordVo findUserTaskList(Long userId);

    UserTaskRecordEntity receiveReward(@Param("taskId") Integer taskId, @Param("userId") Long userId);

    void upd(Integer id);

    void updateArchives(PatientIserArchivesDto archives);

    void deleteArchives(@Param("archivesId") Integer archivesId);

    void addcollection(PatientInfoCountEntity patientInfoCountEntity);

    PatientInfoCountEntity findInfoCollection(Integer infoId);





    void updinformationEntity(@Param("id") Integer id, @Param("whetherCollection") Integer whetherCollection);

    List<InformationEntity> findInfoCollections();

    List<PatientInfoCountEntity> findInfoId();

    List<PatientInfoVo> selectInfoCollection();

    void updinformationEntitys(@Param("infoId") Integer infoId);

    List<PatientVideoVo> findVideoCollectionList(@Param("offset") int offset, @Param("count") Integer count);

    int countVideoCollections();

    void cancelVideoCollection(@Param("videoId") Integer videoId);

    List<PatientUserDoctorVo> findUserDoctorFollowList(@Param("offset") int offset, @Param("count") Integer count);

    int countVideoCollectios();

    List<PatientUserVideoVo> findVideoCollectionLists(@Param("offset") int offset, @Param("count") Integer count);

    int countVideoCollectio();

    void deleteVideoBuy(@Param("videoId") Integer videoId);

    List<ConsumptionRecordVo> findUserConsumptionRecordList(@Param("offset") int offset, @Param("count") Integer count);

    int countVideoCollecti();

    PatientUserWalletEntity findUserWallet(@Param("userId") Long userId);

    List<PatientUserEntity> selectByEmail();


    void upds(@Param("email") String email, @Param("pwd1") String pwd1, @Param("pwd2") String pwd2);

    List<PatientNoticeVo> findSystemNoticeList(@Param("offset") int offset, @Param("count") Integer count);

    int countVideoCollect();

    List<PatientInquiryNoticeVo> findInquiryNoticeList(@Param("offset") int offset, @Param("count") Integer count);

    int countVideoCollec();

    List<CurrencyNoticeVo> findCurrencyNoticeList(@Param("offset") int offset, @Param("count") Integer count);

    int countVideoColle();

    List<PatientUserBankCardEntity> selectBankCard();

    void updateBankCard(PatientUserBankCardEntity patientUserEntity);

    void addbankCard(@Param("bankCardNumber") String bankCardNumber, @Param("bankName") String bankName, @Param("bankCardType") String bankCardType);

    PatientBankCardInfoVo bindUserBankCard(@Param("userId") Long userId);


    void addbindUserBankCard(PatientUserIdCardDto patientUserIdCardDto);

    PatientUserIdCardVo findUserIdCard(@Param("userId") Long userId);

    List<PatientUserDrawRecordVo> findUserDrawRecordList(@Param("offset") int offset, @Param("count") Integer count);

    int countVideoColl();

    PatientUserDrawRecordEntity findUserDrawRecord(@Param("userId") Long userId);


    void updStatus(@Param("id") int id, @Param("money") int money);

    informationWatchRewardRecord fingwindInfoCollection(@Param("userId") Long userId);


    List<PatientSystemNoticeEntity> findUserNoticeReadNum();

    void modifyAllStatus(@Param("userId") Long userId);
}
